Validator = new Object();

Validator.validate = function(formEl) {
    Validator.formEl = formEl;
    //Получаем список полей формы, которые должны пройти проверку
    //Такие поля помечаются префиксом v_
    var els = $$('#'+formEl.id+' [class*="v_"]');
    Validator.status = true;
    els.each(function(el) {
        Validator.status &= Validator.check(el)
    }   
    );
    return Validator.status;
}

Validator.check= function(el) {
    var value = el.value;
    if (el.hasClassName('v_email') && !(/\w{1,}[@][\w\-]{1,}([.]([\w\-]{1,})){1,3}$/.test(value) && value.length < 255)) {
        Validator.error_message = 'Укажите корректный email'
        return false;
    }
       
    if (el.hasClassName('v_password') && !(value.length > 5 && value.length < 31)) {
        Validator.error_message = 'Пароль должен содержать не меньше 6 и не больше 30 символов';
        return false;
    }
    
    if (el.hasClassName('v_required') && !(!value.blank())) {
		var field = '';
		if (el.alt) field = el.alt; else field = el.title;
        Validator.error_message = 'Поле «'+field+'» должно быть заполнено';
        return false;
    }
    
    if (el.hasClassName('v_age') && !(/^[0-9][0-9]$/.test(value) || value == '')) {
        Validator.error_message = 'Укажите корректный возраст';
        return false;
    }
	
	if (el.hasClassName('v_date') && !(/^[0-9][0-9].[0-9][0-9].[0-9][0-9][0-9][0-9]$/.test(value) || value == '')) {
        Validator.error_message = 'Укажите корректную дату';
        return false;
    }
	
    //Отдельно проверяем на не пустоту радио-кнопки
    if (el.hasClassName('v_required') && el.type == "radio") {
         var checked = false;
         var name = el.name;
         try{
         radios = $$('input[name="'+name+'"]');
         radios.each(
         function(s,i){
             if (s.checked){
             checked = true;
         }
         });
         }catch(e){}
         if (!checked) {
            Validator.error_message = 'Заполните все обязательные поля';
            return false;
         }
    }
      
    return true;
}
